#include <algorithm>
#include <iostream>
using namespace std;

// int Add(int left, int right)
// {
//     cout << "int Add(int left, int right)" << endl;
//     return left+right;
// }
//
// double Add(double left, double right)
// {
//     cout << "double Add(double left, double right)" << endl;
//     return left+right;
// }
//
// void f()
// {
//     cout << "f()" << endl;
// }
//
// void f(int a)
// {
//     cout << "f(int a)" << endl;
// }
//
// // void f(int a = 0)
// // {
// //     cout << "f(int a)" << endl;
// // }
//
// void Func(int a, char b)
// {
//     cout << "Func(int a, char b)" << endl;
// }
//
// void Func(char b, int a)
// {
//     cout << "Func(char b, int a)" << endl;
// }
//
// int main()
// {
//     Add(10,20);
//     Add(10.1,10.2);
//
//     f();
//     f(100);
//
//     Func(10,'b');
//     Func('b',20);
//
//     return 0;
// }
//
// void Func(int a, char b);
//
// void Func(int b, char a);


void Test()
{
    int a = 10;
    int& ra = a;

    cout << a << endl;
    cout << ra << endl;
}

void Test2()
{
    int a = 10;
    int& ra = a;
    // int& ra;
    int& rra = a;

    cout << a << endl;
    cout << ra << endl;
    cout << rra << endl;
}

void Test3()
{
    const int a = 10;
    // int& ra = a;
    const int& ra = a;

    // int& b =10;
    const int& b =10;

    double d = 10.2;
    // int& rd = d;
    const int& rd = d;
}

void Test4()
{
    const int a = 0;
    // int& b = a;

    const int c = 1;
    int d = c;

    int x = 0;
    int& y = x;
    const int& z = x;
    x++;
    // z++;
}

int func1()
{
    static int x = 0;
    return x;
}

int& func2()
{
    static int x = 0;
    return x;
}
//
// int main()
// {
//     // int& ret1 = func1();
//     const int& ret1 = func1();
//     int ret1 = func1();
//
//     int& ret2 = func2();
//     const int& rret2 = func2();
// }

void Swap(int& left, int& right)
{
    int temp = left;
    left = right;
    right = temp;
}

int& Count(int x)
{
    static int n = x;
    // int n = x;
    n++;

    return n;
}

int main()
{
    int& ret = Count(10);
    cout << ret << endl;

    Count(20);
    cout << ret << endl;

    return 0;
}






